package com.zmzncs.lmtc.common.util;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @ClassName EnumUtil
 * @Description: 枚举工具类，通过Code返回枚举
 * T extends CodeEnum 定义泛型的上限
 * enumClass.getEnumConstants() 通过反射取出Enum所有常量的属性值
 */
public class EnumUtil {

    public static <Enum> Enum getByCode(int code, Class<Enum> enumClass) {
        try {
            Method getCode = enumClass.getMethod("getCode");
            //通过反射取出Enum所有常量的属性值
            for (Enum each: enumClass.getEnumConstants()) {
                //执行枚举方法获得枚举实例对应的值
                if(code == (int) getCode.invoke(each)) {
                    return each;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

}
